[アップデート] Amazon WorkSpacesでAPIからイメージを作成できる様になりました
しばたです。
本日Amazon WorkSpacesでイメージを作成するAPI(CreateWorkspaceImage)が公開されました。
AWSからのアナウンスはこちらになります。
これまでのAPI
従来Amazon WorkSpacesにおいては以下のAPIが公開されていました。
- (1) 各ユーザーのWorkSpaceを作成するCreateWorkspaces API
- このAPIでは
BundleID
を指定
- このAPIでは
- (2) 各バンドルを作成するCreateWorkspaceBundle API
- このAPIでは
ImageID
を指定
- このAPIでは
バンドルを作成するベースとなるイメージに関しては作成のAPIが無くマネジメントコンソールから行う必要がありました。
今回やっとこの部分がAPIとして公開され、AWS CLIや各種SDKからイメージ作成が可能となり自動化できる部分が増えた形となります。
- (3) ベースとなるイメージを作成するCreateWorkspaceImage API
自動化の限界
とはいえイメージを作成するには元となるWorkSpace環境が必要で、かつ、最初のカスタマイズはWorkSpace内部から行う必要があります。
加えてAppStream 2.0の様にWorkSpace内部からこのAPIを呼べるわけでもありません。[1]
現状は「マネジメントコンソールからポチポチ手作業をしていた部分をAPI化した」だけですのであまり過度な期待はしない方が良いでしょう。
従来の手順
参考までに従来の手順(マネジメントコンソールからの作成手順)を記載しておきます。
WorkSpaces環境を用意し、元になるWorkSpace環境を一つ作成し起動しておきます。
今回はWindows Server 2019ベースのイメージにVS Codeをインストールした環境をベースにします。
(なお、本記事はこれ以後VS Codeは登場しません。「何かカスタマイズしてる」程度に捉えてください)
このWorkSpaceを起動した状態でマネジメントコンソールから「イメージの作成」アクションを選びます。
確認画面が出るので「次へ」をクリック。
イメージ名と説明を記載し「イメージの作成」をクリック。
これでイメージ作成が開始されます。
だいたい40-50分程度待てば作成完了となります。
やってみた
前項の環境に対してAWS CLIからイメージ作成を行ってみます。
本日時点ではAWS CLI Ver.1.25.39からCreateWorkspaceImage
APIに対応しており、まだAWS CLI v2は非サポートでした。
こちらは少し待てばAWS CLI v2でもサポートされるでしょう。
このため今回はAWS CLI Ver.1.25.39 on Bashの環境を使っています。
CLIではaws workspaces create-workspace-image
コマンドでイメージ作成できます。
指定するパラメーターはマネジメントコンソール同様に作成元WorkSpaceID(--workspace-id
)、イメージ名(--name
)、説明(--description
)となります。
aws workspaces create-workspace-image --name "イメージ名" --description "イメージの説明" --workspace-id "作成元WorkSpaceID"
今回はこんな感じでmy-image-02
を作ってみました。
作成に成功するとイメージ情報が返されます。
$ aws workspaces create-workspace-image --name "my-image-02" \
> --description "My Image created by CLI" \
> --workspace-id ws-xxxxxxxxxx
{
"ImageId": "wsi-xxxxxxxx",
"Name": "my-image-02",
"Description": "My Image created by CLI",
"OperatingSystem": {
"Type": "WINDOWS"
},
"State": "PENDING",
"RequiredTenancy": "DEFAULT",
"Created": 1658977370.137,
"OwnerAccountId": "xxxxxxxxxxxx"
}
あとは作成完了を待つだけです。
残念ながらWorkSpacesにはaws workspaces wait
コマンドが無いので完了待ちは自力でポーリングするしか無い感じです。
参考までにイメージの状態取得コマンドを紹介しておきます。
# イメージの状態確認
aws workspaces describe-workspace-images --image-ids "wsi-xxxxxxxx" --query "Images[0].State" --output text
WorkSpaceが起動していない場合
なお、対象WorkSpaceが起動していない場合にaws workspaces create-workspace-image
コマンドを実行すると以下のエラーとなります。
An error occurred (InvalidResourceStateException) when calling the CreateWorkspaceImage operation: The specified WorkSpace is not in the AVAILABLE state. Confirm the WorkSpace identifier, make sure that the WorkSpace is in the AVAILABLE state, and try again.
必要に応じて事前にWorkSpaceの状態チェックや起動処理を用意すると良いでしょう。
# WorkSpaceの状態確認
aws workspaces describe-workspaces --workspace-ids "ws-xxxxxxxxx" --query "Workspaces[0].State" --output text
# 当該WorkSpaceが起動してない場合は起動しておく
aws workspaces start-workspaces --start-workspace-requests "WorkspaceId=ws-xxxxxxxxx"
最後に
以上となります。
シンプルな更新ですがWorkSpaces環境の運用を自動化している方にとっては嬉しいのかな?と思う次第です。
AppStream 2.0はImage Builder内部からイメージ作成のコマンドを実行できる ↩︎